class MetaWidgetEntry:
    def __init__(self):
        self.name = None
        self.parent_meta_widget = None
        self.child_meta_widgets = []
        
        self.dom_object = None
        self.widget_object = None
        self.data_provider_object = None

    # getter/setter for node name
    def getName(self):
        return self.name
    
    def setName(self, name):
        self.name = name

    # getter/setter for object references
    def getWidget(self):
        return self.widget_object

    def setWidget(self, widget_object):
        self.widget_object = widget_object
    
    def getDOM(self):
        return self.dom_object
        
    def setDOM(self, dom_object):
        self.dom_object = dom_object

    # getter/setter for data provider
    def getDataProvider(self):
        return self.data_provider_object
    
    def setDataProvider(self, data_provider_object):
        self.data_provider_object = data_provider_object

    # operations for widget-tree traverse
    def getParentMetaWidget(self):
        return self.parent_meta_widget
    
    def getChildMetaWidgets(self):
        return self.child_meta_widgets
    
    def setParentMetaWidget(self, parent_meta_widget):
        self.parent_meta_widget = parent_meta_widget
        
    def setChildMetaWidgets(self, child_meta_widgets):
        self.child_meta_widgets = child_meta_widgets
        
    def appendChildMetaWidget(self, child_meta_widget):
        if child_meta_widget not in self.child_meta_widgets:
            self.child_meta_widgets.append(child_meta_widget)
